home *** CD-ROM | disk | FTP | other *** search
/ AOL File Library: 2,801 to 2,900 / aol-file-protocol-4400-2801-to-2900.zip / AOLDLs / C++ Files Library / Think C QuickTime Interfaces / TC QuickTime.sit / TC QuickTime / ImageCodec.h next >
Text File  |  1994-03-22  |  6KB  |  240 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, June 8, 1993 at 3:10 PM
  4.  ImageCodec.h
  5.  C Interface to the Macintosh Libraries
  6.  
  7.  
  8.  Copyright Apple Computer, Inc. 1991, 1992
  9.  All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #pragma once
  14.  
  15. #ifndef    __IMAGECODEC__
  16.  
  17. #define    __IMAGECODEC__
  18.  
  19. #ifndef __QUICKDRAW__
  20. #include <Quickdraw.h>
  21. #endif
  22.  
  23. #ifndef __QDOFFSCREEN__
  24. #include <QDOffscreen.h>
  25. #endif
  26.  
  27. #ifndef __TYPES__
  28. #include <Types.h>
  29. #endif
  30.  
  31. #ifndef __COMPONENTS__
  32. #include <Components.h>
  33. #endif
  34.  
  35. #ifndef    __IMAGECOMPRESSION__
  36. #include <ImageCompression.h>
  37. #endif
  38.  
  39.  
  40.  
  41.  
  42. /*    codec component selectors    */
  43.  
  44. #define    codecGetCodecInfo                    0x00
  45. #define    codecGetCompressionTime                0x01
  46. #define    codecGetMaxCompressionSize            0x02
  47. #define    codecPreCompress                    0x03
  48. #define    codecBandCompress                    0x04
  49. #define    codecPreDecompress                    0x05
  50. #define    codecBandDecompress                    0x06
  51. #define    codecCDSequenceBusy                    0x07
  52. #define    codecGetCompressedImageSize            0x08
  53. #define    codecGetSimilarity                    0x09
  54. #define    codecTrimImage                        0x0A
  55. #define    codecRequestSettings                0x0B
  56. #define    codecGetSettings                    0x0C
  57. #define    codecSetSettings                    0x0D
  58.  
  59. /*    codec selectors 0-127 are reserved by Apple */
  60. /*    codec selectors 128-191 are subtype specific */
  61. /*    codec selectors 192-255 are vendor specific */
  62. /*    codec selectors 256-32767 are available for general use */
  63. /*    negative selectors are reserved by the Component Manager */
  64.  
  65.  
  66.  
  67. /*    codec capabilities flags    */
  68.  
  69. #define    codecCanScale                        (1L<<0)
  70. #define    codecCanMask                        (1L<<1)
  71. #define    codecCanMatte                        (1L<<2)
  72. #define    codecCanTransform                    (1L<<3)
  73. #define    codecCanTransferMode                (1L<<4)
  74. #define    codecCanCopyPrev                    (1L<<5)
  75. #define    codecCanSpool                        (1L<<6)
  76. #define    codecCanClipVertical                (1L<<7)
  77. #define    codecCanClipRectangular                (1L<<8)
  78. #define    codecCanRemapColor                    (1L<<9)
  79. #define    codecCanFastDither                    (1L<<10)
  80. #define    codecCanSrcExtract                    (1L<<11)
  81. #define    codecCanCopyPrevComp                (1L<<12)
  82. #define    codecCanAsync                        (1L<<13)
  83. #define    codecCanMakeMask                    (1L<<14)
  84. #define codecCanShift                        (1L<<15)
  85.  
  86.  
  87. typedef    struct {
  88.     long    flags;
  89.     short    wantedPixelSize;
  90.     short    extendWidth;
  91.     short    extendHeight;
  92.     short    bandMin;
  93.     short    bandInc;
  94.     short    pad;
  95.     unsigned long    time;
  96. } CodecCapabilities;
  97.  
  98.  
  99.  
  100. /*    codec condition flags    */
  101.  
  102. #define    codecConditionFirstBand                (1L<<0)    
  103. #define    codecConditionLastBand                (1L<<1)    
  104. #define    codecConditionFirstFrame            (1L<<2)
  105. #define    codecConditionNewDepth                (1L<<3)
  106. #define    codecConditionNewTransform            (1L<<4)
  107. #define    codecConditionNewSrcRect            (1L<<5)
  108. #define    codecConditionNewMask                (1L<<6)
  109. #define    codecConditionNewMatte                (1L<<7)
  110. #define    codecConditionNewTransferMode        (1L<<8)
  111. #define    codecConditionNewClut                (1L<<9)
  112. #define    codecConditionNewAccuracy            (1L<<10)
  113. #define    codecConditionNewDestination        (1L<<11)
  114. #define    codecConditionFirstScreen            (1L<<12)
  115. #define    codecConditionCodecChangedMask        (1L<<31)    
  116.  
  117.  
  118. #define    codecInfoResourceType        'cdci'            /* codec info resource type */
  119.  
  120. #define    codecInterfaceVersion        1                /* high word returned in component GetVersion */
  121.  
  122.  
  123. typedef    struct {    
  124.     ImageSequence             sequenceID;                /* precompress,bandcompress */
  125.     ImageDescriptionHandle     imageDescription;        /* precompress,bandcompress */
  126.     Ptr                     data;
  127.     long                     bufferSize;
  128.     long                     frameNumber;
  129.     long                     startLine;
  130.     long                     stopLine;
  131.     long                    conditionFlags;
  132.     CodecFlags                 callerFlags;
  133.     CodecCapabilities        *capabilities;            /* precompress,bandcompress */
  134.     ProgressProcRecord        progressProcRecord;
  135.     CompletionProcRecord    completionProcRecord;    
  136.     FlushProcRecord         flushProcRecord;
  137.  
  138.     PixMap                     srcPixMap;                /* precompress,bandcompress */
  139.     PixMap                     prevPixMap;
  140.     CodecQ                     spatialQuality;
  141.     CodecQ                     temporalQuality;
  142.     Fixed                     similarity;
  143.     DataRateParamsPtr        dataRateParams;
  144.     long                    reserved;
  145. } CodecCompressParams;
  146.  
  147. typedef    struct {    
  148.     ImageSequence             sequenceID;                /* predecompress,banddecompress */
  149.     ImageDescriptionHandle     imageDescription;        /* predecompress,banddecompress */
  150.     Ptr                     data;
  151.     long                     bufferSize;
  152.     long                     frameNumber;
  153.     long                     startLine;
  154.     long                     stopLine;
  155.     long                    conditionFlags;
  156.     CodecFlags                 callerFlags;
  157.     CodecCapabilities         *capabilities;            /* predecompress,banddecompress */
  158.     ProgressProcRecord        progressProcRecord;
  159.     CompletionProcRecord    completionProcRecord;
  160.     DataProcRecord            dataProcRecord;
  161.  
  162.     CGrafPtr                 port;                    /* predecompress,banddecompress */
  163.     PixMap                     dstPixMap;                /* predecompress,banddecompress */
  164.     BitMapPtr                 maskBits;
  165.     PixMapPtr                 mattePixMap;
  166.     Rect                     srcRect;                /* predecompress,banddecompress */
  167.     MatrixRecord             *matrix;                /* predecompress,banddecompress */
  168.     CodecQ                     accuracy;                /* predecompress,banddecompress */
  169.     short                     transferMode;            /* predecompress,banddecompress */
  170.     long                    reserved[2];
  171. } CodecDecompressParams;
  172.  
  173.  
  174.  
  175. #define    PREAMBLE    Handle    storage
  176.  
  177. pascal ComponentResult
  178. CDGetCodecInfo(PREAMBLE,CodecInfo *info)
  179. ;
  180.  
  181. pascal ComponentResult
  182. CDGetCompressionTime(PREAMBLE,PixMapHandle src,const Rect *srcRect, short depth,CodecQ *spatialQuality,
  183.     CodecQ *temporalQuality,unsigned long *time)
  184. ;
  185.  
  186. pascal ComponentResult
  187. CDGetMaxCompressionSize(PREAMBLE,PixMapHandle src,const Rect *srcRect, short depth,CodecQ quality,long *size)
  188. ;
  189.  
  190.  
  191. pascal ComponentResult
  192. CDPreCompress(PREAMBLE,CodecCompressParams *params)
  193. ;
  194.  
  195. pascal ComponentResult
  196. CDBandCompress(PREAMBLE,CodecCompressParams *params)
  197. ;
  198.  
  199. pascal ComponentResult
  200. CDPreDecompress(PREAMBLE,CodecDecompressParams *params)
  201. ;
  202.  
  203. pascal ComponentResult
  204. CDBandDecompress(PREAMBLE,CodecDecompressParams *params)
  205. ;
  206.  
  207. pascal ComponentResult
  208. CDCodecBusy(PREAMBLE,ImageSequence seq)
  209. ;
  210.  
  211.  
  212. pascal ComponentResult
  213. CDGetCompressedImageSize(PREAMBLE,ImageDescriptionHandle desc,Ptr data,long bufferSize, 
  214.     DataProcRecordPtr dataProc,long *dataSize)
  215. ;
  216.  
  217. pascal ComponentResult
  218. CDGetSimilarity(PREAMBLE,PixMapHandle src,const Rect *srcRect,ImageDescriptionHandle desc,Ptr data,Fixed *similarity)
  219. ;
  220.  
  221. pascal ComponentResult
  222. CDTrimImage(PREAMBLE,ImageDescriptionHandle Desc,Ptr inData,long inBufferSize, DataProcRecordPtr dataProc,
  223.     Ptr outData,long outBufferSize,FlushProcRecordPtr flushProc,Rect *trimRect,ProgressProcRecordPtr progressProc)
  224. ;
  225.  
  226. pascal ComponentResult
  227. CDRequestSettings(PREAMBLE,Handle settings,Rect *rp,ModalFilterProcPtr filterProc)
  228. ;
  229.  
  230. pascal ComponentResult
  231. CDGetSettings(PREAMBLE,Handle settings)
  232. ;
  233.  
  234. pascal ComponentResult
  235. CDSetSettings(PREAMBLE,Handle settings)
  236. ;
  237.  
  238.  
  239. #endif    /*__IMAGECODEC__*/
  240.